"use strict";
let clients = [
    {
        firstName: "Александр",
        lastName: "Иванчук",
        date: "11-29-1990",
        phone: "8 (929) 988-90-09",
        amounts: [2546, 2098, 764, 7266],
    },
    {
        firstName: "Анатолий",
        lastName: "Стаценко",
        date: "02-12-1987",
        phone: null,
        amounts: [563, 8287, 889],
    },
    {
        firstName: "Марина",
        lastName: "Петрова",
        date: "07-26-1997",
        phone: "8 (899) 546-09-08",
        amounts: [6525, 837, 1283, 392],
    },
    {
        firstName: "Иван",
        lastName: "Караванов",
        date: "09-12-1999",
        phone: null,
        amounts: [7634, 283, 9823, 3902],
    },
    {
        firstName: "Оксана",
        lastName: "Абрамова",
        date: "01-24-2002",
        phone: "8 (952) 746-99-22",
        amounts: [342, 766, 362],
    },
];

//Часть первая

let newClient = {
    firstName: "Петр",
    lastName: "Щеглов",
    date: "04-17-2000",
    phone: "89548789636",
    amounts: [1253, 456, 789],
};


newClient.firstName = prompt("Ваше имя", "");
newClient.lastName = prompt("Ваша фамилия", "");
newClient.date = prompt("Дата рождения в формате: мм-дд-гггг", "");
if (isNaN(newClient.date)) {
    newClient.date = prompt("Повторите ввод даты рождения в формате: мм-дд-гггг", "");
}
newClient.phone = +prompt("Номер телефона:", null);
if (isNaN(newClient.phone)) {
    newClient.phone = +prompt("Повторите ввод номера телефона", null);
}
newClient.amounts = [];

while (confirm(`Добавить покупку для клиента ${newClient.firstName}?`) !== false) {
    newClient.amounts.push(+prompt("Введите сумму покупки:"));
}

clients.push(newClient);
console.log(clients);

//Часть вторая

//Функция возврата имени и фамилии
function fullName (object) {
    object = (`${object.firstName} ${object.lastName}`);
    return object;
}


//Функция возврата дня рождения
function getBirthday(dateString) {
    const currentDate = new Date();
    const currentDateString = currentDate.toLocaleString("ru-RU", {day: "numeric", month: "long"});

    const date= new Date(dateString);
    const stringDate = date.toLocaleString("ru-RU", {day: "numeric", month: "long"});

    let resultStringDate = stringDate;
    if (stringDate === currentDateString) {
        resultStringDate = (`${resultStringDate} (сегодня)`);
    }
    return resultStringDate;
}


//Функция возврата общей суммы покупок клиента
function getAllAmount(array) {
    let sumAll = 0;
    for (let i = 0; i < array.length; i++) {
        sumAll += array[i];
    }
    return sumAll;
}


//Функция возврата общей суммы покупок клиента
function getAverageAmount(arr) {
    let resultAverage = getAllAmount(arr) / arr.length;
    return resultAverage.toFixed(1);
}

//Функция возврата информации о клиенте
let showClients = (clientsArr) => {
    for (let i = 0; i < clientsArr.length; i++) {
       console.log(`Клиент ${fullName(clientsArr[i])} имеет среднюю сумму чека ${getAverageAmount(clientsArr[i].amounts)} руб. День рождение клиента ${getBirthday(clientsArr[i].date)}`);
    }
}

showClients(clients);


//Обработчик ошибок
try {
    showClients();
} catch (e) {
    console.log("Вызвана функция без параметров");
    console.log(`Детали ошибки: ${e.message}`);
}


let bestClients = [
    {
        firstName: "Семен",
        lastName: "Глушаков",
        date: "04-17-1990",
        phone: "8 (950) 958-58-58",
        amounts: [4569, 589, 100, 4266],
    },
    {
        firstName: "Юрий",
        lastName: "Плющенко",
        date: "10-01-1998",
        phone: null,
        amounts: [5635, 999, 1258],
    },
    {
        firstName: "Алина",
        lastName: "Малинина",
        date: "08-10-2001",
        phone: "8 (914) 414-41-14",
        amounts: [3698, 896, 15600],
    },
];

setTimeout(() => {
    showClients(bestClients);
}, 3000);


//Функция возврата информации о клиенте потратившего наибольшую сумму
function whoSpentMore(arr) {
    let maxAllAmount = -Infinity;
    let objClient;
    for (let i = 0; i < arr.length; i++) {
        if (getAllAmount(arr[i].amounts) > maxAllAmount) {
            maxAllAmount = getAllAmount(arr[i].amounts);
            objClient = fullName(arr[i]);
        }
    }
    return console.log(`Больше всех потратил(а) ${objClient}. Сумма покупок ${maxAllAmount} руб.`);
}

whoSpentMore(bestClients);
whoSpentMore(clients);